package jzqb.service;

import haha.life.common.CutPageBean;
import jzqb.bo.AdminUserInfoBo;
import jzqb.common.Result;
import jzqb.po.AdminLoginLogPo;
import jzqb.po.AdminLoginPo;
import jzqb.po.AdminUserPo;
import net.sf.json.JSONArray;

import java.io.IOException;
import java.util.List;


public interface AdminUserInfoService {
    Result login(String id, String pwd);
//    AdminUserPo adminuserinfopoByID(String ID);
//    String generateLayoutList(String ID);
//    Result getUserinfoList(UserInfoBo userinfoBo);
    CutPageBean<AdminUserPo> cutPage(AdminUserInfoBo userinfoBoAdmin);


    /**
     * 根据部门ID  查询用户集合
     * @param deptNo  部门编号
     * @return
     */
    List<AdminUserPo> findUsersByDeptNo(String deptNo);

    /**
     * 根据用户名 查询用户
     * @param userName  用户名
     * @return 用户集合
     */
    List<AdminUserPo>  getUsrByName(String userName);


    Result resetPwd (String id,String pwd);


    Result mute (AdminUserInfoBo adminUserInfoBo);

    /**
     * 判断某人是否属于某个权限组
     * @param userid 用户id
     * @param PermissionGroupID 权限组id
     * @return true:是 false:不是
     */
    boolean belongToPermissionGroup(String userid,String PermissionGroupID);


    /**
     * 用户登录后记录登录日志
     * @param adminLoginLogPo 日志模型
     */
    void insertLoginRecord(AdminLoginLogPo adminLoginLogPo);

    Result initPwd(String id,String pwd,String newPwd,String newPwdConfirm);

    AdminUserInfoBo basicInfo(String userid);

    /***
     * 判断id是否已经存在
     * @param id
     * @return
     */
    boolean isUserIDExist(String id);

    /***
     * 单个添加用户
     * @param userPo 用户对象
     * @param type add:新建 edit：编辑
     * @return 执行结果
     */
    boolean addUser(AdminUserPo userPo,String type);

    /**
     * 删除用户
     * @param userPo 用户对象
     * @return 执行结果
     */
    boolean deleteUser(AdminUserPo userPo);

    /***
     * 通过登录人的id,获取登录人所在的权限组id列表
     * @param userid 登录人的id
     * @return 权限组集合
     */
    List<String> getAllFunctionPermissionGroupIdsOfUser(String userid);

    /**
     * 用户修改自己的密码
     * @param adminloginpo 用户对象
     * @return 修改结果
     */
    Result changeMyPwd(AdminLoginPo adminloginpo);


    /*
    * 获取所有的用户对象
    * */
    List<AdminUserPo>  getAllUser();

    /**
     * 把excel内容写入数据库
     * @param jsonArray excel内容对象
     * @return 整体执行结果(整体:所有行的执行)
     */
    boolean writeExcelData(JSONArray jsonArray) throws IOException;

    /**
     * 获取userInfo 的信息
     * @param userId
     * @return
     */
    AdminUserInfoBo getUserById(String userId);

    Boolean updateUserInfo(AdminUserInfoBo userPo);
}
